package com.chenfan.mcn.model.vo;

import com.chenfan.mcn.extension.log.FieldDesc;
import com.chenfan.mcn.clients.baseinfo.BaseCustomerBillingVO;
import com.chenfan.mcn.enums.ApprovalStatusEnum;
import com.chenfan.mcn.enums.ArchivingStatusEnum;
import com.chenfan.mcn.enums.OfflineCommissionSettleStatusEnum;
import com.chenfan.mcn.model.IncomeContract;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;

/**
 * @author tangwei
 * Date:     2021/1/20 20:33
 * Description: 收入合同詳情
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class IncomeContractDetailVO extends IncomeContract {

    /**
     * 执行单
     */
    private List<BasicExcutionOrderVO> excutionOrders;

    /**
     * 关联补充协议
     */
    List<ContractAgreementVO> agreementList;

    /**
     * 折扣审批单详情
     */
    private DiscountInfoVO discountInfoVO;

    /**
     * 客户返点审批单号
     */
    private String rebateContractCode;

    /**
     * 形式合同类型名称
     */
    @NotNull
    @FieldDesc(value = "形式合同类型")
    private String formalContractTypeName;

    /**
     * 我司合同主体名称
     */
    @NotNull
    @FieldDesc(value = "我司合同主体")
    private String companyContractSubjectName;

    /**
     * 合作来源名称
     */
    @NotNull
    @FieldDesc(value = "合同来源")
    private String cooperateSourceName;

    /**
     * 创建人部门
     */
    private String departmentName;

    /**
     * 开票信息
     */
    private BaseCustomerBillingVO billingDetails;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 客户资料
     */
    private CustomerVO customerVO;

    /**
     * 0非客户首单；1是客户首单
     */
    private Boolean customerFirstOrder;

    /**
     * 审批节点id
     */
    private Long flowId;

    /**
     * 审批流程id
     */
    private String flowIds;

    /**
     * 审批节点名称
     */
    private String flowStatusName;

    /**
     * 单据状态名称
     */
    private String approvalStatusName;

    /**
     * 合同类型名称
     */
    private String contractTypeName;

    /**
     * 合作类型名称
     */
    private String cooperationTypeName;

    /**
     * 主播名称：取值【红人平台昵称+平台名称】
     */
    private String anchorName;


    public String getApprovalStatusName() {
        if (Objects.nonNull(getApprovalStatus())) {
            return ApprovalStatusEnum.getStatusName(getApprovalStatus());
        }
        return null;
    }


    /**
     * 类目名称
     */
    private String liveContractCategoryName;

    /**
     * 年框合同信息
     */
    private YearFrameContractVO yearFrameContractVO;

    /**
     * 商品信息
     */
    private List<LiveContractCommodityDetailVO> liveContractCommodityList;

    /**
     * 归档状态名称
     */
    private String archivingStatusName;

    public String getArchivingStatusName() {
        if (Objects.nonNull(getArchivingStatus())) {
            return ArchivingStatusEnum.getStatusName(getArchivingStatus());
        }
        return null;
    }


    /**
     * 合作品牌
     */
    private String cooperateBrandName;

    /**
     * 合同标签名称
     */
    private String contractTagName;

    /**
     * 线下佣金-结算状态：0待结算、1结算中、2待回款、3部分回款、4已回款
     */
    private String offlineCommissionSettleStatusName;

    /**
     *
     * @return
     */
    public String getOfflineCommissionSettleStatusName() {
        return OfflineCommissionSettleStatusEnum.getStatusName(this.getOfflineCommissionSettleStatus());
    }

    /**
     * 线下佣金结算-审批节点id
     */
    private Long offlineCommissionFlowId;

    /**
     * 线下佣金结算-审批流程id
     */
    private String offlineCommissionFlowIds;

    /**
     * 参与保比的收入合计
     * */
    private BigDecimal incomeTotal;
    /**
     * 不参与保比的收入合计
     * */
    private BigDecimal  noIncomeTotal;
}